package com.share51.novel.config;

import com.share51.novel.common.enums.NovelSiteEnums;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 小说爬虫配置
 * @author gb
 */
@Getter
@Setter
@Configuration
@ConfigurationProperties(prefix = "com.share51.novel")
public class NovelConfig implements InitializingBean {

    /**
     * 站点域名
     */
    private String hostName;

    /**
     * 是否启用 ssl 加密
     */
    private boolean enableSsl = false;

    /**
     * 网站名称
     */
    private String title;

    /**
     * 首页关键字
     */
    private String keywords;

    /**
     * 站点描述
     */
    private String desc;

    /**
     * 是否生成 txt 下载文本 默认生成
     */
    private boolean enableWriteTxt = true;

    /**
     * 免责声明
     */
    private String reliefAffirming;

    /**
     * 本地文件保存路径
     */
    private String saveFilePath;

    /**
     * 对外暴露文件路径
     */
    private String webFilePath;

    /**
     * 小说采集站点配置
     */
    private Map<String,CrawlSite> crawlSite;

    /**
     * 后置处理，只让系统支持的爬虫规则加载此配置
     * @throws Exception
     */
    @Override
    public void afterPropertiesSet() throws Exception {
        Map<String,CrawlSite> crawlSite=new ConcurrentHashMap<>();
        for (String key:this.crawlSite.keySet()){
            if (NovelSiteEnums.exist(key)){
                crawlSite.put(key,this.crawlSite.get(key));
            }
        }
        this.crawlSite=crawlSite;
    }
}
